﻿using MediatR;
using Reporting.API.DTOs.InvoiceManagementResponseDto;
using Reporting.API.Utils;
using Reporting.Domain;
using Reporting.Errorcode;
using System.ComponentModel.DataAnnotations;

namespace Reporting.API.Application.Commands.InvoiceManagements
{
    /// <summary>
    /// 添加 开票管理
    /// </summary>
    public class AddInvoiceManagementCommand: IRequest<ApiResult>
    {
        /// <summary>
        /// 开票单号
        /// </summary>
        public string Invoicingnumber { get; set; }

        /// <summary>
        /// 开票主题
        /// </summary>
        public string Invoicetheme { get; set; }

        /// <summary>
        /// 发票类型
        /// </summary>
        public int InvoicetypeId { get; set; }

        /// <summary>
        /// 开票日期
        /// </summary>
        public DateTime Invoicingdate { get; set; }

        /// <summary>
        /// 收票方
        /// </summary>
        public int PayeeId { get; set; }

        /// <summary>
        /// 开票金额
        /// </summary>
        public decimal Invoiceamount { get; set; }

        /// <summary>
        /// 发票号
        /// </summary>
        public string Invoicenumber { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string Invoicemanagementnotes { get; set; }
    }


    /// <summary>
    /// 显示+分页 开票管理
    /// </summary>
    public class GetInvoiceManagementCommand : IRequest<ApiResult<PagingResult<IList<GetpageInvoiceManagementResponse>>>>
    {

        /// <summary>
        /// 当前页
        /// </summary>
        public int PageIndex { get; set; }

        /// <summary>
        /// 页容量
        /// </summary>
        public int PageSize { get; set; }
    }


    /// <summary>
    /// ID获取 开票管理
    /// </summary>
    public class GetIDInvoiceManagementCommand : IRequest<ApiResult<InvoiceManagement>>
    {
        /// <summary>
        /// 开票管理ID
        /// </summary>
        public int Invoicemanagementid { get; set; }

    }




    /// <summary>
    /// 修改 开票管理
    /// </summary>
    public class UpdateInvoiceManagementCommand : IRequest<ApiResult>
    {
        /// <summary>
        /// 开票管理ID
        /// </summary>
        public int Invoicemanagementid { get; set; }

        /// <summary>
        /// 开票单号
        /// </summary>
        public string Invoicingnumber { get; set; }

        /// <summary>
        /// 开票主题
        /// </summary>
        public string Invoicetheme { get; set; }

        /// <summary>
        /// 发票类型
        /// </summary>
        public int InvoicetypeId { get; set; }

        /// <summary>
        /// 开票日期
        /// </summary>
        public DateTime Invoicingdate { get; set; }

        /// <summary>
        /// 收票方
        /// </summary>
        public int PayeeId { get; set; }

        /// <summary>
        /// 开票金额
        /// </summary>
        public decimal Invoiceamount { get; set; }

        /// <summary>
        /// 发票号
        /// </summary>
        public string Invoicenumber { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string Invoicemanagementnotes { get; set; }
    }



    /// <summary>
    /// 删除 开票管理
    /// </summary>
    public class DeleteInvoiceManagementCommand : IRequest<ApiResult>
    {
        /// <summary>
        /// 开票管理ID
        /// </summary>
        public int Invoicemanagementid { get; set; }
    }




}
